package com.kfm.am;

public class Cat extends Pet {

    private String color;

    // final 修饰的变量称为常量，不能被改变，必须初始化
    public static final int MAX_LIVE = 1;

    public Cat(String name, int age, String color) {
        // super 调用父类的构造, 并且在构造方法的第一行，不能和 this 调用构造同时存在
        super(name, age);
        // super.属性名 调用父类的属性
        super.age = age;
//        Math.PI
//        MAX_LIVE = 2;
        super.info();
        this.color = color;
    }

    public Cat() {}

    public Cat(String color) {
        // super 调用父类的构造, 并且在构造方法的第一行
        super("", 12);
        this.color = color;
    }

    @Override
    public void info() {
        // super.方法名 调用父类的方法
        super.info();
        super.finalMethod();
        System.out.println(this.age);
        this.publicMethod();
        System.out.println("Cat info()");
    }

    static {
        // 错误使用this和super
        // System.out.println(this.color);
        // System.out.println(super.age);
    }

    public static void staticMethod() {

        // 在static方法中不能使用this和super
//        System.out.println(super.age);
    }

    // 返回当前对象本身的有关信息，返回字符串对象
    public String toString() {
        return "Cat { color: " + this.color + " }";
    }



    // 被final修饰的方法不能被重写
//    public void finalMethod() {
//
//    }

}
